package org.csu.onlineedubackend.service;

import org.csu.onlineedubackend.entity.ChatGroup;
import org.csu.onlineedubackend.entity.GroupAdmin;
import org.csu.onlineedubackend.entity.GroupMute;
import org.csu.onlineedubackend.entity.User;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface GroupManagementService {
    
    // 设置群管理员
    GroupAdmin setGroupAdmin(Long groupId, Integer userId, Integer operatorId);
    
    // 取消群管理员
    boolean removeGroupAdmin(Long groupId, Integer userId, Integer operatorId);
    
    // 获取群管理员列表
    List<User> getGroupAdmins(Long groupId);
    
    // 检查用户是否是群管理员
    boolean isGroupAdmin(Long groupId, Integer userId);
    
    // 检查用户是否是群主
    boolean isGroupOwner(Long groupId, Integer userId);
    
    // 禁言群成员
    GroupMute muteGroupMember(Long groupId, Integer userId, Integer operatorId, Date muteUntil);
    
    // 取消禁言群成员
    boolean unmuteGroupMember(Long groupId, Integer userId, Integer operatorId);
    
    // 全群禁言
    GroupMute muteGroup(Long groupId, Integer operatorId, Date muteUntil);
    
    // 取消全群禁言
    boolean unmuteGroup(Long groupId, Integer operatorId);
    
    // 检查用户是否被禁言
    boolean isUserMuted(Long groupId, Integer userId);
    
    // 检查群是否被全体禁言
    boolean isGroupMuted(Long groupId);
    
    // 获取群成员列表，包含角色信息（群主、管理员、普通成员）和禁言状态
    List<Map<String, Object>> getGroupMembersWithRoles(Long groupId);

    // 解散群聊
    void disbandGroup(Long groupId, Integer operatorId);
} 